
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

# 显示灰度图像
def fun1():
    # 生成一个二维随机数组
    img = np.random.rand(10, 10)

    # 绘制灰度图像
    plt.imshow(img, cmap='gray')

    # 显示图像
    plt.show()

# 显示彩色图像
def fun2():
    # 生成一个随机的彩色图像
    img = np.random.rand(10, 10, 3)

    # 绘制彩色图像
    plt.imshow(img)

    plt.show()

# 显示热力图
def fun3():
    # 生成一个二维随机数组
    data = np.random.rand(10, 10)

    # 绘制热力图
    plt.imshow(data, cmap='hot')

    # 显示图像
    plt.colorbar()
    plt.show()

# 显示地图
def fun4():
    # 加载地图图像
    img = Image.open('../map.jpeg')
    # 转换为数组
    data = np.array(img)

    # 绘制地图
    plt.imshow(data)
    # 隐藏坐标轴
    plt.axis('off')

    # 显示图像
    plt.show()

# 显示矩阵
def fun5():
    # 生成一个随机矩阵
    data = np.random.rand(10, 10)

    # 绘制矩阵
    plt.imshow(data)

    plt.show()

# 创建4x4的二维numpy数组
def fun6():
    n = 4

    # 创建一个nxn的二维numpy数组
    a = np.reshape(np.linspace(0, 1, n**2), (n, n))

    plt.figure(figsize=(12, 4.5))

    # 第一张图展示灰度的色彩映射方式，并且没有进行颜色的混合
    plt.subplot(131)
    plt.imshow(a, cmap='gray', interpolation='nearest')
    plt.xticks(range(n))
    plt.yticks(range(n))
    # 灰度映射，无混合
    plt.title('Gray color map, no blending', y=1.02, fontsize=12)

    # 第二张图展示使用viridis颜色映射的图像，同样没有进行颜色混合
    plt.subplot(132)
    plt.imshow(a, cmap='viridis', interpolation='nearest')
    plt.xticks(range(n))
    plt.yticks([])
    # Viridis映射，无混合
    plt.title('Viridis color map, no blending', y=1.02, fontsize=12)

    # 第三张图展示使用viridis颜色映射的图像，并且使用了双立方插值方法进行颜色混合
    plt.subplot(133)
    plt.imshow(a, cmap='viridis', interpolation='bicubic')
    plt.xticks(range(n))
    plt.yticks([])
    # Viridis映射，双立方混合
    plt.title('Viridis color map, bicubic blending', y=1.02, fontsize=12)

    plt.show()

if __name__ == '__main__':
    fun6()